
package chipwits.operator;

import java.awt.Image;
import java.awt.Toolkit;

/**
 *
 * @author Emmanuel
 */
public class OpType {
    private Type type;
    private Image image;
    private int nbArrows;

    public OpType(Type type) {
        this.type=type;
        this.image=listeImagesOp[type.ordinal()];
        switch(type){
            case VIDE:
            case VOIR:
            case SENTIR:
            case TOUCHER:
            case CLAVIER:
            case ALEATOIRE:
            case COMPARER_CHOSE:
            case COMPARER_MVT:
            case COMPARER_NB_EGAL:
            case COMPARER_NB_INF: //limite entre les types avec 2 fleches ou une seule. =9
                nbArrows=2;
                break;
            case BOUGER:
            case PRENDRE:
            case ZIGOUILLER:
            case SON:
            case SOUS_ESPACE:
            case SAUVER_CHOSE:
            case SAUVER_MVT:
            case SAUVER_NB:
            case INCREMENTER:
            case DECREMENTER:
            case POP:
            case JONCTION:
                nbArrows=1;
                break;
            case POUBELLE:
            case RETOUR_DEBUT:
            case RETOUR_DEBUT_ESPACE:
            default:
                nbArrows=0;
                break;
        }
    }

    public int getNbArrows(){
        return nbArrows;
    }

    public Image getImage() {
        return image;
    }

    public Type getType() {
        return type;
    }

    public boolean isVIDE(){
        if(this.type==Type.VIDE){
            return true;
        }else{
            return false;
        }
    }

    public static enum Type {     //liste des différents types d'opérateurs
        VIDE,
        VOIR,
        SENTIR,
        TOUCHER,
        CLAVIER,
        ALEATOIRE,
        COMPARER_CHOSE,
        COMPARER_MVT,
        COMPARER_NB_EGAL,
        COMPARER_NB_INF, //limite entre les types avec 2 fleches ou une seule. =9
        BOUGER,
        PRENDRE,
        ZIGOUILLER,
        SON,
        SOUS_ESPACE,
        RETOUR_DEBUT,
        RETOUR_DEBUT_ESPACE,
        SAUVER_CHOSE,
        SAUVER_MVT,
        SAUVER_NB,
        INCREMENTER,
        DECREMENTER,
        POP,
        JONCTION,
        POUBELLE
    };
    

    private static Image[] listeImagesOp = new Image[]{ //meme ordre que OpType.
        null, //pour un opérateur vide.
        Toolkit.getDefaultToolkit().getImage("graphics/op/voir.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/sentir.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/toucher.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/clavier.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/aleatoire.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/comparer_chose.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/comparer_mvt.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/comparer_nb_egal.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/comparer_nb_inf.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/bouger.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/prendre.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/zigouiller.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/son.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/sous-espace.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/retour_debut.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/retour_debut_espace.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/sauver_chose.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/sauver_mvt.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/sauver_nb.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/incrementer.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/decrementer.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/pop.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/op/jonction.png"),
        Toolkit.getDefaultToolkit().getImage("graphics/poubelle.png")//la poubelle.
    };


}
